/*****************************************************
 * 予算項目の一覧を表すデータクラス
 * @author kino
 *****************************************************/
function BudgetResults(){
	/** プロパティの継承 */
	AbstractResults.call(this, ItemType.BUDGET);
}

/** メソッドの継承 */
ClassUtility.inherit(BudgetResults, AbstractResults);

/**
 * 
 * @param {Object} evaledJson response/result 以下
 */
BudgetResults.prototype.fromJson = function(evaledJson){
	if(evaledJson.type != this.itemType){
		throw new Error('想定外のデータ型: require=' + this.itemType + ' actual=' + evaledJson.type);
	}
	this.length = 0;
    for (var i = 0; i < evaledJson.rows.length; i++) {
        var result = new BudgetResult();
        result.fromJson(evaledJson.rows[i]);
        this.push(result);
    }
}

/*****************************************************
 * 予算管理画面の結果一覧の1行分のデータ。
 * @param {int} budgetId 予算項目の識別子
 * @param {String} budgetName 予算項目の表示名
 * @param {int} budget 予算総額
 *****************************************************/
function BudgetResult(budgetId, budgetName, budget){
    /** {int} 予算項目の識別子 */
    this.budgetId = budgetId;
    
    /** {String} 予算項目の表示名 */
    this.budgetName = budgetName;
    
    /** {int} 予算総額 */
    this.budget = budget;
}

/**
 * 予算管理画面の結果一覧の1行分のデータをJSON形式で表した文字列を返す。
 */
BudgetResult.prototype.toJson = function(){
    var resultParts = new Array();
    resultParts.push('{"budgetId":');
    resultParts.push(this.budgetId);
    resultParts.push(', "budgetName":"');
    resultParts.push(this.budgetName);
    resultParts.push('", "budget":');
    resultParts.push(this.budget);
    resultParts.push('}');
    return resultParts.join('');
}

/**
 * 予算管理画面の結果一覧の1行分のデータに相当するJSON表現をeval()した結果オブジェクトから、データを復元する。
 * @param {JSON} evaledJson eval()したJSON表現。
 */
BudgetResult.prototype.fromJson = function(evaledJson){
    this.budgetId = evaledJson.budgetId;
    this.budgetName = evaledJson.budgetName;
    this.budget = evaledJson.budget;
}
